
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

// 利用反射创建对象
public class EmpDemo05 {

    public static void main(String[] args) {
        try {
            // 1. 反射
            // 1.1 创建class对象 ： 全限定路径名： 包名+类名
            // Class 类里 封装了 指定类的相关信息
            // 属性 + 构选器 + 方法 + 创建对象
            Class c1 = Class.forName("org.nextcore.entity.Emp");

            // 2.获取方法
            System.out.println("所有方法：方式1;public ");
            Method[] m1 = c1.getMethods();

            // 方法： 方法名 参数列表 反回值类型
            for (Method method : m1) {
                System.out.println("方法名：" + method.getName());

                // 参数列表
                Parameter[] parameters = method.getParameters();
                System.out.println("参数列表:" + parameters);
                for (Parameter parameter : parameters) {
                    System.out.println("参数名：" + parameter.getName() + "参数类型：" + parameter.getType().getName());
                }

                // 返回值类型
                String name = method.getReturnType().getName();
                System.out.println("返回值：" + name);

                System.out.println("================================");

            }
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public String toString() {
        return "EmpDemo05 []";
    }
}
